<!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <title>JSON.stringify()</title>
</head>

<body>
    <script>
        // JSON.stringify(object [,replacer [,space] ] )方法
        // replacer：参数过滤器为函数时，需接受两个参数，属性键名和属性值
        var person = {
            name: "小明",
            age: 18,
            hobby: ["swimming", "sing", "basketball"],
            date: 2000,
            year: undefined
        };
        
        //第2个参数，为过滤器,参数过滤器为函数时
        //函数需接受两个参数，属性（键）名和属性值
        //我们称此函数为替换函数，只针对对象的属性，对数组无效
        //通过替换函数可以修改属性对应的值

        var people = JSON.stringify(person, function (key, value) {
            //对对象属性值进行处理
            switch (key) {
                case "age":
                    return undefined;
                    break; //  如果返回值为undefined,那么相应的键值对会被忽略
                case "hobby":
                    return value.join(" ");
                    break; //value此时为数组，可使用数组的所有方法
                case "date":
                    return 2017;
                    break;
                default: // 不能省略default 项，此时返回传入的值，以便其他值都能正常出现在结果了
                    return value;
            }
        });
        console.log(people);
        // {"name":"小明","hobby":"swimming sing basketball","date":2017}
    </script>
</body>

</html>